package com.ruoyi.modules.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.modules.domain.ConstructionWasteTransportationOrder;
import com.ruoyi.wasterTran.dto.OrderDto;
import com.ruoyi.wasterTran.vo.BillStatisticsVo;
import com.ruoyi.wasterTran.vo.WasterTypeDataVo;

/**
 * 建筑垃圾联运订单信息Service接口
 * 
 * @author ssh
 * @date 2024-12-15
 */
public interface IConstructionWasteTransportationOrderService 
{
    /**
     * 查询建筑垃圾联运订单信息
     * 
     * @param id 建筑垃圾联运订单信息主键
     * @return 建筑垃圾联运订单信息
     */
    public ConstructionWasteTransportationOrder selectConstructionWasteTransportationOrderById(String id);

    /**
     * 查询建筑垃圾联运订单信息列表
     * 
     * @param constructionWasteTransportationOrder 建筑垃圾联运订单信息
     * @return 建筑垃圾联运订单信息集合
     */
    public List<ConstructionWasteTransportationOrder> selectConstructionWasteTransportationOrderList(ConstructionWasteTransportationOrder constructionWasteTransportationOrder);

    /**
     * 新增建筑垃圾联运订单信息
     * 
     * @param constructionWasteTransportationOrder 建筑垃圾联运订单信息
     * @return 结果
     */
    public int insertConstructionWasteTransportationOrder(ConstructionWasteTransportationOrder constructionWasteTransportationOrder);

    /**
     * 修改建筑垃圾联运订单信息
     * 
     * @param constructionWasteTransportationOrder 建筑垃圾联运订单信息
     * @return 结果
     */
    public int updateConstructionWasteTransportationOrder(ConstructionWasteTransportationOrder constructionWasteTransportationOrder);

    /**
     * 批量删除建筑垃圾联运订单信息
     * 
     * @param ids 需要删除的建筑垃圾联运订单信息主键集合
     * @return 结果
     */
    public int deleteConstructionWasteTransportationOrderByIds(String[] ids);

    /**
     * 删除建筑垃圾联运订单信息信息
     * 
     * @param id 建筑垃圾联运订单信息主键
     * @return 结果
     */
    public int deleteConstructionWasteTransportationOrderById(String id);

    /**
     * 订单统计
     * @param orderDto
     * @return
     */
    List<BillStatisticsVo> selectOrderCount(OrderDto orderDto);

    /**
     * 垃圾类型数据统计
     * @return
     */
    List<WasterTypeDataVo> selectOrderWasterTypeCount(OrderDto orderDto);

    /**
     *  联单总数,运输总量, 运输次数 ,处置总量
     * @return
     * @param orderDto
     */
    List<Map<String, Object>> countNum(OrderDto orderDto);

    /**
     *  状态分布
     * @return
     */
    List<Map<String, Object>> selectOrderByStatus(OrderDto orderDto);

    /**
     *  联单统计列表
     * @return
     */
    List<Map<String, Object>> selectOrderList(OrderDto orderDto);


    /**
     *  工地区域分布统计
     * @return
     */
    List<Map<String, Object>> selectConstructionSiteArea(OrderDto orderDto);
}
